package com.jerry.junit4.classes;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

import com.jerry.junit4.classes.Calculator;

public class CalculatorTest {
	private static Calculator calculator = new Calculator();

	@Before
	public void setUp() throws Exception {
		calculator.clear();
	}

	@Test
	public void testAdd() {
		calculator.add(2);
        calculator.add(3);
        assertEquals(5, calculator.getResult());
	}

	@Test
	public void testSubstract() {
		calculator.add(10);
        calculator.substract(2);
        assertEquals(8, calculator.getResult());
	}

	@Ignore("Multiply() Not yet implemented")
	@Test
	public void testMultiply() {
		fail("Not yet implemented");
	}

	@Test
	public void testDivide() {
		calculator.add(8);
        calculator.divide(2);
        assertEquals(4, calculator.getResult());
	}
	/*
	 * 其他特性：
	 * 1. @BeforeClass @AfterClass 这类方法必须是Public 和 Static的
	 * 2. 限时测试：@Test(timeout  =   1000 )
	 * 3. 测试异常：@Test(expected  =  ArithmeticException. class )
	 * 4. Runner ( 运行器 ) ：默认是 org.junit.internal.runners.TestClassRunner
	 * 5. 参数化测试：见  SquareTest
	 * 6. 打包测试： 见 AllCalculatorTests
	 */

}
